home *** CD-ROM | disk | FTP | other *** search
/ Creative Review 28 / Creative-Review-CD-ROM-28.iso / pc / kungfu / assets / game.dir / 00014_Script_baddy manager class < prev    next >
Text File  |  1997-08-08  |  6KB  |  255 lines

  1. -- baddy class method
  2. -- --------------------------------------------------
  3.  
  4. property state
  5. property makinggap
  6. property startgap
  7.  
  8. property list
  9. property props
  10. property animlist
  11.  
  12. property max
  13. property total
  14. property madecount
  15. property killcount
  16.  
  17. property datalist
  18.  
  19. property toggle
  20.  
  21. property channels
  22. property freechannels
  23.  
  24.  
  25. -- --------------------------------------------------
  26. global gfloor
  27. global gcell
  28. global ggame
  29. global gplayer
  30.  
  31. -- ==================================================
  32. -- new method
  33. -- --------------------------------------------------
  34. on new me, props
  35.   
  36.   minit me, props
  37.   return me
  38.   
  39. end mnew 
  40.  
  41. -- ==================================================
  42. -- minit method
  43. -- --------------------------------------------------
  44. on minit me
  45.   
  46.   --  put "in minit baddy manager"
  47.   
  48.   put data2list ( "baddy anim data" ) into animlist
  49.   
  50.   set props = [:]
  51.   
  52.   setaprop ( props, #type , #baddy )
  53.   
  54.   set list = []
  55.   
  56.   set max = 3
  57.   
  58.   set numochannels = 10
  59.   set lochannel = 8
  60.   
  61.   set channels = []
  62.   
  63.   repeat with channel = ( lochannel ) to ( lochannel + numochannels  - 1)
  64.     add channels, channel
  65.   end repeat
  66.   
  67.   repeat with channel in channels
  68.     puppetsprite channel, true
  69.     set the castnum of sprite channel = false
  70.   end repeat
  71.   
  72.   set freechannels = duplicate ( channels )
  73.   
  74.   set toggle = 0
  75.   
  76.   --  put "out minit baddy manager"
  77.   
  78. end minit
  79.  
  80. -- ==================================================
  81. -- mstart method
  82. -- --------------------------------------------------
  83. on mstart me, screenlist
  84.   
  85.   --  put "in mstart baddy manager"
  86.   
  87.   set max = checkaprop ( screenlist , #max, 1 )
  88.   set total = checkaprop ( screenlist, #total, 1 )
  89.   set datalist = checkaprop ( screenlist, #data, 1 )
  90.   set health = checkaprop ( screenlist, #health, 1 )
  91.   
  92.   setaprop props, #health, health
  93.   
  94.   set killcount = 0
  95.   set madecount = 0
  96.   
  97.   repeat with loadname in datalist
  98.     mload gload, loadname
  99.   end repeat
  100.   
  101.   set makinggap = 60
  102.   set startgap  = 2 * 60
  103.   set walkongap = 3 * 60
  104.   
  105.   set state = #making
  106.   maddtask gtime, me, the timer + walkongap
  107.   set toggle = random ( 2 ) - 1
  108.   
  109.   --  put "out mstart baddy manager"
  110.   
  111. end mstart me
  112.  
  113. -- ==================================================
  114. -- mstartmaking method
  115. -- --------------------------------------------------
  116. on mstartmaking me
  117.   
  118.   --  put "in mstartmaking baddy manager"
  119.   
  120.   set state = #making
  121.   maddtask gtime, me, the timer + startgap
  122.   set toggle = random ( 2 ) - 1
  123.   
  124.   --  put "out mstartmaking baddy manager"
  125.   
  126. end mstartmaking
  127.  
  128. -- ==================================================
  129. -- mstopmaking method
  130. -- --------------------------------------------------
  131. on mstopmaking me
  132.   
  133.   --  put "in mstopmaking baddy manager"
  134.   
  135.   set state = #waiting
  136.   mdeletetasks gtime, me
  137.   
  138.   --  put "out mstopmaking baddy manager"
  139.   
  140. end mstopmaking
  141.  
  142. -- ==================================================
  143. -- mdotask method
  144. -- --------------------------------------------------
  145. on mdotask me
  146.   
  147.   --  put "in mdotask baddy manager"
  148.   
  149.   if ( count ( list ) = max ) or ( madecount = total ) then
  150.     mstopmaking me
  151.     return false
  152.   end if
  153.   
  154.   mmake me
  155.   
  156.   return makinggap
  157.   
  158.   --  put "out mdotask baddy manager"
  159.   
  160. end mdotask me
  161.  
  162. -- ==================================================
  163. -- mmake method
  164. -- --------------------------------------------------
  165. on mmake me
  166.   
  167.   --  put "in mmake baddy manager"
  168.   
  169.   set data = getat ( datalist, random ( count ( datalist ) ) )
  170.   
  171.   setaprop props, #data, data
  172.   
  173.   set animdata = getaprop ( animlist, data )
  174.   
  175.   setaprop props, #animdata, animdata
  176.   
  177.   set toggle = not ( toggle )
  178.   
  179.   if toggle then set direction = #right
  180.   else set direction = #left
  181.   
  182.   case direction of
  183.     #right: set cell = - 2
  184.     #left: set cell = 31
  185.   end case
  186.   
  187.   set offset = mgetstartoffset ( gcell , direction,  data )
  188.   
  189.   set theloch = ( mcell2screen ( gcell, cell ) )  
  190.   set loc = point ( theloch , mgetfloor ( gcell ) ) +  offset
  191.   
  192.   set thechannel = getat ( freechannels, 1 )
  193.   deleteat ( freechannels, 1 )
  194.   
  195.   setaprop ( props, #loc, loc )
  196.   setaprop ( props, #cell, cell )
  197.   setaprop ( props, #direction, direction )
  198.   setaprop ( props, #drawdata ,  [ #channel: thechannel ] ) 
  199.   set baddy = new ( script "baddy class" , props  )
  200.   
  201.   add list, baddy
  202.   
  203.   mstart baddy
  204.   
  205.   set madecount = madecount + 1
  206.   
  207.   --  put "out mmake baddy manager"
  208.   
  209. end mmake
  210.  
  211. -- ==================================================
  212. -- mreturnthedead method
  213. -- --------------------------------------------------
  214. on mreturnthedead me, thedead
  215.   
  216.   --  put "in mreturnthedead baddy manager"
  217.   
  218.   add freechannels, the channel of thedead
  219.   deleteone list , thedead
  220.   set killcount = killcount + 1
  221.   
  222.   if killcount = total then 
  223.     mvictory gplayer
  224.     
  225.     repeat with loadname in datalist
  226.       munload gload, loadname
  227.     end repeat
  228.     
  229.     return
  230.   end if
  231.   
  232.   if state = #waiting then 
  233.     mstartmaking me
  234.   end if
  235.   
  236.   --  put "out mreturnthedead baddy manager"
  237.   
  238. end mreturnthedead
  239.  
  240. -- ==================================================
  241. -- mhide method
  242. -- --------------------------------------------------
  243. on mhide me
  244.   
  245.   --  put "in mhide baddy manager"
  246.   
  247.   repeat with baddy in list
  248.     mhide baddy
  249.     mdraw baddy
  250.   end repeat
  251.   
  252.   --  put "out mhide baddy manager"
  253.   
  254. end mhide
  255.